package com.gm.wj.controller;

import com.gm.wj.entity.PtCaptain;
import com.gm.wj.result.Result;
import com.gm.wj.result.ResultFactory;
import com.gm.wj.service.PtService;
import com.gm.wj.util.SysLoging;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;
import java.util.Map;

/**
 * @program: wj
 * @description: 拼团
 * @author: Huang_shengjun
 * @create: 2020-11-20 12:25
 **/
@Log4j2
@RestController
@Api(tags = "拼团管理相关接口")
public class PtController {

    @Autowired
    PtService ptService;

    // 发起拼团
    @PostMapping("api/admin/pt/{courseId}")
    @SysLoging("发起拼团") //根据SysLoging的注解信息，进行方法的注释
    @ApiOperation("发起拼团信息的接口")
    public Result addPt(@PathVariable("courseId") String courseId) {
        try{
            Map<String, String> map = ptService.add(courseId);
            if (map.get("code").equals("200")){
                return ResultFactory.buildSuccessResult("发起拼团成功，请尽快前往订单管理支付，逾期拼团将会失效！",null);
            } else {
                return ResultFactory.buildFailResult(map.get("message"));
            }
        } catch (Exception e){
            e.printStackTrace(); // 在控制台打印出异常种类，错误信息和出错位置等
            return ResultFactory.buildFailResult("服务器出错了，请联系管理员。错误信息：" + e.getMessage());
        }
    }

    // 父列表
    @GetMapping("/api/admin/pt/{courseId}")
    @ApiOperation("查询父拼团列表信息的接口")
    @SysLoging("查询父拼团列表信息") //根据SysLoging的注解信息，进行方法的注释
    public Result listPt(@PathVariable("courseId") String courseId) {
        try{
            return ResultFactory.buildSuccessResult("查询成功",ptService.findByCourse(courseId));
        } catch (Exception e){
            e.printStackTrace(); // 在控制台打印出异常种类，错误信息和出错位置等
            return ResultFactory.buildFailResult("服务器出错了，请联系管理员。错误信息：" + e.getMessage());
        }
    }

    // 参团
    @PostMapping("api/admin/joinPt/{fatherId}")
    @SysLoging("参团") //根据SysLoging的注解信息，进行方法的注释
    @ApiOperation("参团信息的接口")
    public Result joinPt(@PathVariable("fatherId") String fatherId) {
        try{
            int status = ptService.addMember(fatherId);
            switch (status) {
                case 0:
                    return ResultFactory.buildFailResult("拼团失败！");
                case 1:
                    return ResultFactory.buildSuccessResult("参团成功，请尽快前往订单管理支付，逾期拼团将会失效！",null);
                case 2:
                    return ResultFactory.buildFailResult("拼团已满人！");
                case 3:
                    return ResultFactory.buildFailResult("该课程你已经报名了，不允许重复报名");
                default:
                    return ResultFactory.buildFailResult("执行参团错误！");
            }
        } catch (Exception e){
            e.printStackTrace(); // 在控制台打印出异常种类，错误信息和出错位置等
            return ResultFactory.buildFailResult("服务器出错了，请联系管理员。错误信息：" + e.getMessage());
        }
    }

    // 子列表
    @GetMapping("/api/admin/ptChildren/{fatherId}")
    @ApiOperation("查询子拼团列表信息的接口")
    @SysLoging("查询子拼团列表信息") //根据SysLoging的注解信息，进行方法的注释
    public Result findChildrenByFatherId(@PathVariable("fatherId") String fatherId) {
        try{
            return ResultFactory.buildSuccessResult("查询成功",ptService.findChildrenByFatherId(fatherId));
        } catch (Exception e){
            e.printStackTrace(); // 在控制台打印出异常种类，错误信息和出错位置等
            return ResultFactory.buildFailResult("服务器出错了，请联系管理员。错误信息：" + e.getMessage());
        }
    }



}
